package com.smartcommunity.service.facelib;

import com.smartcommunity.bean.model.Pager;
import com.smartcommunity.bean.model.Result;
import com.smartcommunity.entity.facelib.FaceLib;
import com.smartcommunity.entity.facelib.FaceLibPerson;

import java.util.List;
import java.util.Map;

/**
 * @Author: tianzongbing
 * @Date: 2020/02/17
 * @Description: 人脸库业务层接口
 */
public interface FaceLibService {

    /**
     * @Description: 分页查询人脸库列表
     * @param FaceLib 查询参数
     * @return 分页对象
     */
    Pager<FaceLib> listFaceLibs(FaceLib FaceLib);

    List<FaceLib> findFaceLibByLibIds(String libId);

    /*
     * @Description: 新增人脸库。新增时，libId为空；
     */
    int addFaceLib(FaceLib faceLib);

    /*
     * @Description: 更新人脸库。更新时，更新LibId以外的所有属性
     */
    int updateFaceLib(FaceLib faceLib);

    /**
     * @Description: 更新人脸库人员数量
     * @param libId 人脸库编号
     * @return 0/1
     */
    int updateFaceLibTotal(String libId);

    /**
     * @Description: 删除人脸库(仅根据LibId属性删除)
     * @param faceLib 人脸库
     */
    Result deleteFaceLib(FaceLib faceLib);

    /**
     * @Description: 分页查询人脸库人员信息
     * @param faceLibPerson 查询参数
     * @return 分页
     */
    Pager<FaceLibPerson> listFaceLibPerson(FaceLibPerson faceLibPerson);

    /**
     * @Description: 查询人脸库人员信息
     * @param faceLibPerson 查询参数
     * @return
     */
    public List<FaceLibPerson> listLibPerson(FaceLibPerson faceLibPerson);

    /**
     * @Description: 添加单个人员信息
     * @param faceLibPerson 人员信息
     * @return
     */
    int addFaceLibPerson(FaceLibPerson faceLibPerson);

    /**
     * @Description: 批量添加人员信息
     * @param list 人员信息。其中中文标签名存于tagEntityList中tagEntity.tagName
     * @return
     */
    int addFaceLibPersonList(List<FaceLibPerson> list);

    /**
     * @Description: 更新单个人员信息
     * @param faceLibPerson 人员信息(更新id以外所有属性)
     * @return
     */
    int updateFaceLibPerson(FaceLibPerson faceLibPerson);

    /**
     * @Description: 删除人员信息
     * @param faceLibPerson 人员信息(仅根据id属性删除)
     * @return
     */
    int deleteFaceLibPerson(FaceLibPerson faceLibPerson);

    /**
     * @Description: 根据人脸库ID删除所有人员信息
     * @param libId 人脸库ID
     * @return
     */
    int deleteFaceLibPersonByLibId(String libId);

    /**
     * @Description: 清空缓存(标签缓存)
     * @return 清空缓存的数量
     */
    int flushCache();

    /**
     * @Description: 批量更新人员信息，可用于批量导入图片时，更新人员信息
     * @param list 人员信息
     * @return 数据库操作结果
     */
    int updateFaceLibPersonList(List<FaceLibPerson> list);

    /**
     * @Description: 用于批量导入图片
     * @return 数据库操作结果
     */
    int updateFaceLibPersonPic(List<FaceLibPerson> personList);
}
